import path from 'path';
import { viteMockServe } from 'vite-plugin-mock';
import vue from '@vitejs/plugin-vue';
import { isProd } from './build';
export default ({ command }) => {
  return {
    // 基本公共路径
    base: './',
    // mode: 'development', // serve 时默认 'development'，build 时默认 'production'
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src')
      },
    },
    css: {
      preprocessorOptions: {
        scss: {
          prependData: '@import "~@/styles/index.scss";'
        }
      }
    },
    // optimizeDeps: {
    //   include: './node_modules/path/path'
    // },
    // resolve: {
    //   // 导入时想要省略的扩展名列表。注意，不建议忽略自定义导入类型的扩展名（例如：.vue），因为它会干扰 IDE 和类型支持。
    //   extensions: ['.js', '.json']
    // },
    serve: {
      // 端口号
      port: '3000',
      // 地址
      hostname: 'localhost',
      // 运行时是否自动打开浏览器
      open: false,
      // 跨域
      // proxy: {
      // '/api': {
      //   target: 'http://www.target.com',
      //   changeOrigin: true,
      //   rewrite: path => path.replace(/^\/api/, '')
      // }
      // }
      // hmr: {
      //   overlay: true,
      // },
    },
    build: {
      target: 'modules',
      outDir: 'dist',
      assetsDir: 'static',
      assetsInlineLimit: 2048,
      cssCodeSplit: true,
      sourcemap: false,
      minify: 'terser',
      brotliSize: false,
      terserOptions: {
        compress: {
          keep_infinity: true,
          // 删除正式环境中的打印
          drop_console: isProd
        }
      }
    },
    plugins: [vue(), viteMockServe({
      ignore: /^\_/,
      supportTs: false,
      mockPath: 'mock',
      showTime: true,
      localEnabled: command === 'serve', // 生产环境开启 mock
      prodEnabled: command !== 'serve', // 打包是否启用 mock 功能
      // 这样可以控制关闭mock的时候不让mock打包到最终代码内
      injectCode: `
        import { setupProdMockServer } from '../mock/_createMockProdServe';
        setupProdMockServer();
      `,
    }), ],
  };
};
